let urlName = "/jzweb/fuzhouDraw";
let isDrawing = null; // 标记是否正在进行抽签

let falg = false;
let timerId
let types = null
$(function() {
    document.title = '竞赛管理平台'; // 动态设置网页标题
    $('link[rel="shortcut icon"]').attr('href', `${'../../static/favicon.ico'}`)
    console.log(window.location.href.split('?')[1])
    if(window.location.href.split('?')[1]) {
        $('.openPages').show()
    }else {
        $('.openPages').hide()
    }

    load();
    cteated(101)
    cteated(205)
});

$(document).ready(function() {
    lottery()
});
function load() {
    $('#YuLin')
        .bootstrapTable(
            {
                method : 'get', // 服务器数据的请求方式 get or post000pp-00p-000p0p00op0p
                url : urlName + '/trackList', // 服务器数据的加载地址
                iconSize: 'outline',
                theadClasses: "thead-dark",
                toolbar: '#exampleToolbar',
                striped: true, // 设置为true会有隔行变色效果
                dataType: "json", // 服务器返回的数据类型
                pagination: true, // 设置为true会在底部显示分页条
                singleSelect: false, // 设置为true将禁止多选
                // contentType : "application/x-www-form-urlencoded",
                // //发送到服务器的数据编码类型
                pageSize: 9999, // 如果设置了分页，每页数据条数
                pageNumber: 1, // 如果设置了分布，首页页码
                //search : true, // 是否显示搜索框
                showColumns: false, // 是否显示内容下拉框（选择显示的列）
                sidePagination: "server", // 设置在哪里进行分页，可选值为"client" 或者 "server"
                queryParamsType: "",
                queryParams : function(params) {
                    return {
                        //说明：传入后台的参数包括offset开始索引，limit步长，sort排序列，order：desc或者,以及所有列的键值对
                        current : params.pageNumber,
                        number : params.pageSize,
                    };
                },
                // 返回false将会终止请求
                responseHandler : function(res){
                    if(res.code !== '0') {
                        layer.msg(res.msg);
                        return false
                    }
                    isDrawing = res.data.hasDraw
                    return {
                        "rows": res.data.trackDrawDOList //数据
                    };
                },
                columns : [
                    {
                        field : 'unitName',
                        title : '参赛院校',
                        align : 'center',
                    },
                    {
                        field : 'name',
                        title : '参赛选手一',
                        align : 'center',
                    },
                    {
                        field : 'track',
                        title : '赛道',
                        class : 'track',
                        align : 'center',
                        formatter : function(value, row, index) {
                            if(value !=='') {
                                return  value
                            }
                            return '-'
                        }
                    },
                    {
                        field : 'placeNum',
                        title : '序号',
                        class : 'studentNumber',
                        align : 'center',
                        formatter : function(value, row, index) {
                            if(value !=='') {
                                return  value
                            }
                            return '-'
                        }
                    },
                    {
                        field : 'name2',
                        title : '参赛选手二',
                        align : 'center',
                    },
                    {
                        field : 'track2',
                        title : '赛道',
                        class : 'track',
                        align : 'center',
                        formatter : function(value, row, index) {
                            if(value !=='') {
                                return  value
                            }
                            return '-'
                        }
                    },
                    {
                        field : 'placeNum2',
                        title : '序号',
                        class : 'studentNumber',
                        align : 'center',
                        formatter : function(value, row, index) {
                            if(value !=='') {
                                return  value
                            }
                            return '-'
                        }
                    },
                ]
            });
}

function reLoad() {
    $('#YuLin').bootstrapTable('refresh');
}

/**
 * 大屏抽签
 */
const openPage =() => {
    window.open('/jzweb/fuzhouDraw',"_blank")
}

//导出
function downExcelModelFile() {
    layer.confirm('您确定要导出吗？', {
        btn1:function(index){
            if(!isDrawing) {
                layer.msg('请先完成抽签')
                layer.close(index);
                return
            }
            try {
                window.location.href = urlName + "/downloadImportTemplate";
                layer.close(index)
            }catch (e) {
                layer.msg('导出失败')
            }

        }
    });

}

const clearExcelModelFile = () => {
    layer.confirm('您确定要清空吗？', {
        btn1:function(index){
            if(!isDrawing) {
                layer.msg('请先完成抽签')
                layer.close(index);
                return
            }
            try {
                clearTrackDraw()
                layer.close(index)
                reLoad()
            }catch (e) {
                layer.msg('清空失败')
            }

        }
    })
}

const clearTrackDraw = () => {
    $.ajax({
        type : "get",
        url : urlName +`/empty`,
        async : false,
        error : function(request) {
            layer.msg('清空失败')
        },
        success : function(res) {
            if (res.code === '0') {
            } else {
                // parent.layer.alert(res.msg)
            }

        }
    });
}

// 抽签
function trackDrawCreate() {
    $.ajax({
        type : "get",
        url : urlName +`/draw`,
        async : false,
        error : function(request) {
            parent.layer.alert(request);
        },
        success : function(res) {
            if (res.code === '0') {
                // layer.msg('抽签完毕')
                // reLoad()
            } else {
                parent.layer.alert(res.msg)
            }

        }
    });
}

// 抽签
function lottery() {

    // B随机抽签
    $('#drawBButton').click(function() {
        let index = layer.confirm('确认开始抽签？', {
            btn: ['确定', '取消']
        }, function () {
            if(falg) {
                return layer.msg('抽签中')
            }
            timerId = setInterval(updateBNumbers, 100);
            types = 1
            isDrawing = true
            falg = true
            trackDrawCreate()
            layer.close(index);
            // // 点击停止按钮结束抽签
        })

    });


    $('#stopButton').click(async function() {
        let index = layer.confirm('确认停止抽签？', {
            btn: ['确定', '取消']
        }, function () {
            if(isDrawing) {
                if(falg) {
                    clearInterval(timerId);
                    // trackDrawCreate()
                    reLoad()
                    layer.msg('抽签完毕')
                }else {
                    layer.msg('抽签已完成')
                }
            }
            falg = false
            layer.close(index);
        })
    });
}

// 更新序号
function updateBNumbers() {
    let rows = $('#YuLin').bootstrapTable('getData'); // 获取表格数据
    let total = rows.length


    //场次
    let session = ['B','C',]

    if (rows.length === 0)  return layer.msg('暂无选手信息')
    let tableRows = $('#YuLin tbody tr');
    tableRows.each(function(index, row) {

        // 检录号
        let randomNumber = getRandomNumber(1, total);
        $(row).find('.studentNumber').text(randomNumber);

        //场次
        let name2 = getRandomStringFromArray(session);
        $(row).find('.track').text(name2);

    });
}


// 生成指定范围的随机数
function getRandomNumber(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

// 随机选择一个字符串
function getRandomStringFromArray(arr) {
    let randomIndex = getRandomNumber(0, arr.length - 1);
    return arr[randomIndex];
}